1. Field of the Invention
The invention relates generally to digital data processing systems whose behavior is for the most part determined by the contents of a database that is read or written by the system and more specifically to systems of this type which may be configured by modifying the contents of the database.
2. Description of Related Art
U.S. Ser. No. 10/117,387 discloses a highly-configurable system of the type just described which is used to control business processes such as handling orders or customer complaints. A system like that disclosed in U.S. Ser. No. 10/17387 may however be used for any kind of process control. FIG. 1 shows a schematic overview of such a system 101 as it has been modified to use the reconfiguration techniques that are the subject matter of the present invention.
System 101 is implemented using a standard computer 103 that is connected to a standard database system 125. The standard database system may be one such as those made by Oracle Corporation, of Redwood City, Calif. or Microsoft Corporation, of Redmond, Wash. Standard database system 125 includes tables, metadata 126 which are tables that define themselves and the other tables, and triggers 128. For purposes of the following discussion, a trigger is code which is associated with a table and is executed by system 101 in response to an event such as a modification of a record of the table. Standard computer 103 has a processor 105 which is connected to Internet 107 and to local peripheral devices 108 as well as to database system 125, which is implemented using non-volatile storage such as that provided by disk drives. Processor 105 has a memory 109 (understood to include both physical and virtual memory) which includes code executed by processor 109. Of interest to the present discussion is standard operating system code 111, Internet code 115, for performing functions such as email and interacting with Web pages according to the HTTP protocol, database code 113, which is part of and controls the operation of database system 125, and process control code 117, which is application code that implements the process control system. Also included in database system 125 are current schedule table 123 and current query and processing plans table 124 in memory 109. These tables contain information which database system 125 uses to accelerate making and executing queries. Process control code 117 includes two subdivisions: administrative module 119, which permits users of system 101 to configure and administer system 101, and exec module 121, which performs process control operations. Exec module 121 uses components of the operating system 111, Internet code 115, and DB code 113 to interact with Internet 107, local peripheral devices 108, and DB system 125. With regard to the interaction with DB system 125, process control code 117 issues queries to DB system 125 and receives the results of the queries from DB system 125. System 101 can run on a single computer 103, which functions as a server for the system, or alternatively it can run concurrently on a plurality of servers for load balancing purposes.
In broad terms, process control system 101 works by making a process record for each process that is being controlled in a PR table in tables 190 and using predefined queries to retrieve records that indicate conditions of the records' processes that require performance of some kind of activity. The predefined queries are either defined by system 101 or configured by the user. The user-configured queries are contained in tables in database system 125. The activity may either be performed by a user of system 101 using an interactive interface or automatically by system 101. The activities to be performed by system 101 are defined by tables in database system 125. For details, see U.S. Ser. No. 10/117,387. To give a concrete example of how system 101 works, one type of process that can be controlled by system 101 is a customer complaint. The exemplary process for dealing with a customer complaint is to assign it to a customer complaint specialist. The customer complaint specialist is to investigate the complaint and reply to the customer within a set time period. If the reply is not timely, the complaint is escalated to the customer complaint specialist's supervisor, again with a time limit for the supervisor to deal with the problem. The activity that corresponds to the escalation is the dispatch of an email message to the supervisor. In system 101, when the complaint arrives, a process record for the complaint is made in a process record table in tables 190. When the complaint specialist replies to the customer, the specialist alters the process record to indicate that the complaint specialist has replied and the time of the reply. System 101 periodically runs a query which queries the process record table for process records that indicate that the complaint specialist has not timely replied. The query further specifies that when the complaint specialist has not timely replied, the activity to be performed is to escalate the complaint by sending email to the supervisor. When system 101 finds such a record in the process record table, it performs the specified activity, as defined by data values in the process record and activity definitions in state machine tables 158.
A particularly important aspect of system 101 for the present discussion is that system 101 is highly configurable. Configuration is done by setting values in records of configuration tables 129. The tables in configuration tables 129 fall into four groups: state machine tables, which define what activities system 101 performs and how the performance of the activity affects the state of system 101, permission tables, which define the permissions held by various users of system 101, notification tables, which define who is to be notified and how when an activity is performed, login tables, which define how users must login, and name definition tables, which define the names used for entities in system 101. Configuration change tracking tables 188 are tables which track changes made in configuration tables 129. An example of how configuration tables 129 are used in system 101 is the following: each process monitored by the system belongs to a project and the project is defined in a project table in configuration tables 129. Changes made to the project table may be tracked in configuration change tracking tables 188. The use of configuration tables 129 to configure system 101 also limits the system's configurability so that it can be safely done by non-technical users of system 101. All of the tools provided by DB system 125 for configuring records in its tables are available to configure the records in the tables of system 125, as are the user interfaces which DB system 125 provides for those tools.
A problem with any highly-configurable system is system availability while the configuration of the system is being changed. In the case of systems like system 101, where configuration is done by changing tables in DB system 125, DB system 125 provides locking mechanisms which bar access to a table while changes are being made in it. The difficulty with such an arrangement in a system like system 101 is that the system will not operate if access to the tables that configure it is barred. System 101 thus becomes inoperable during the often considerable amount of time required to reconfigure system 101.
A way of keeping system 101 going while reconfiguring it is to make a copy of system 101's current database, do the configuration changes on the copy, test the changes on the copy, and then replace the configuration tables from the current database with the configuration tables from the copy. The problem with this approach is that any configuration changes made in system 101 between the time the copy is made and the time the configuration tables from the copy replace the current configuration tables are lost. To be sure, users of system 101 can be told to make no configuration changes after the copy has been made, but there is no way of knowing whether such changes have been made in fact, and if they have been made, they will be lost. This in turn may lead to unexpected behavior in system 101. In a process control system like system 101 such unexpected behavior obviously cannot be tolerated. It is thus an object of the present invention to permit the use of a copy of system 101's current database for making configuration changes while providing certainty that changes made to the configuration of the current database during the process of making configuration changes will not be lost.